/*
 * Copyright © 2018 www.noark.xyz All Rights Reserved.
 *
 * 感谢您选择Noark框架，希望我们的努力能为您提供一个简单、易用、稳定的服务器端框架 ！
 * 除非符合Noark许可协议，否则不得使用该文件，您可以下载许可协议文件：
 *
 *        http://www.noark.xyz/LICENSE
 *
 * 1.未经许可，任何公司及个人不得以任何方式或理由对本框架进行修改、使用和传播;
 * 2.禁止在本项目或任何子项目的基础上发展任何派生版本、修改版本或第三方版本;
 * 3.无论你对源代码做出任何修改和改进，版权都归Noark研发团队所有，我们保留所有权利;
 * 4.凡侵犯Noark版权等知识产权的，必依法追究其法律责任，特此郑重法律声明！
 */
package xyz.noark.codec.output;


import java.util.*;
import java.math.*;

import static org.junit.Assert.assertEquals;


import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import xyz.noark.core.lang.ByteArrayOutputStream;

public class CodedOutputStreamImplTest {

    private CodedOutputStreamImpl codedOutputStream;
    // 在每个测试方法之前执行一次，用于初始化对象
    @Before
    public void setUp() {
        codedOutputStream = new CodedOutputStreamImpl();
    }
    /**
     * 测试 writeInt32 方法是否正确地将整数写入字节流。
     */
    @Test
    public void writeInt32_ShouldWriteCorrectly() {
        System.out.println(Integer.toHexString(-2048));
        System.out.println(Integer.toHexString(2047));
        System.out.println(Integer.toHexString(0xFF - 0x81));
        System.out.println(0x1FF);
        System.out.println(0xFFF);
        int value = 128; // 待写入的整数值

        // 调用 writeInt32 方法
        codedOutputStream.writeInt(-16);
        codedOutputStream.writeInt(127);
        codedOutputStream.writeInt(128);
        codedOutputStream.writeInt(256);
        codedOutputStream.writeInt(65535);
        codedOutputStream.writeInt(Integer.MAX_VALUE);
        System.out.println(Arrays.toString(codedOutputStream.toByteArray()));
        // 验证写入的数据是否正确
        //assertEquals(ProtocolBufferUtil.int32ToByteArray(value), codedOutputStream.toByteArray());
        System.out.println(0x80);
        System.out.println(0x81);
    }
}
